草庐IT

Android Activity 静默退出

全部标签

c++ - 抑制纯虚函数调用模态对话框并静默崩溃

这个问题在这里已经有了答案:HowtosuppressadialogboxdisplayedbycodethatIcan'tchange?(2个答案)关闭8年前。背景资料:我们的应用程序使用由外部供应商编写的组件。该组件有时会因C++运行时错误“调用纯虚函数”对话框而崩溃。我们将应用程序部署在LCD显示器上,我们希望崩溃只是崩溃,因为我们有一个流程可以在应用程序崩溃时重新启动它。我们确定问题的根源在于供应商提供的组件,我们无法修改,因为我们没有源代码。如果我们能够在崩溃时自动重启应用程序,我们可以等待供应商提供的解决方案。问题在于,在用户单击错误的“确定”按钮之前,应用程序不会崩溃,因

c++ - 在主程序退出期间销毁等待 std::condition_variable 的线程的正确方法

我正在使用std::conditional_variable为多线程程序中的信号计时,以控制各个关键部分的流程。该程序可以运行,但在退出期间我不得不使用谓词(kill_==true)来避免破坏仍在等待std::conditional_variable::wait()的线程。我不知道它是否是销毁所有等待线程的正确方法,征求意见。这是一个代码片段:classtimer{//...timer(std::shared_ptrparent,constbool&kill):parent_(parent),kill_(kill){}private:std::condition_variablecv_

c++ - 在 C++98 中,如何在不展开的情况下退出进程?

在C++11或更高版本中,我们可以调用std::quick_exit来退出进程而不进行任何展开,也就是说,不会调用析构函数[after|在]std::quick_exit.我有一个项目:它有一个全局对象,并且在全局对象的析构函数中存在fatalerror;我无权访问全局对象的源;如果我可以在main函数的最后一行调用std::quick_exit,则不会触发错误;出于某种原因,该项目必须使用C++98编译器进行编译;也就是说,我不能在C++98编译器中调用std::quick_exit。简而言之:C++98中的哪个函数等同于C++11的std::quick_exit?在Windows下

c++ - SDL 退出全屏

当我退出全屏SDL应用程序时,我的计算机分辨率更改为640x480。我的应用程序分辨率是1024x768。如何在退出应用程序后将分辨率切换回原来的分辨率?我使用SDL1.2和Ubuntu10.04 最佳答案 这听起来像是X驱动程序问题或窗口管理器问题。您可以在不同的发行版或不同的ubuntu版本上尝试吗?除非您的程序崩溃,否则您应该调用SDL_Quit(),或SDL_QuitSubSystem(SDL_INIT_VIDEO),或者直接退出全屏。那应该恢复原始设置。 关于c++-SDL退出

c++ - 使用 ASIO 的线程池 - 线程退出,任务未执行

我正在使用BoostASIO在C++中编写ThreadPool类。以下是我到目前为止编写的代码:线程池类usingnamespacestd;usingnamespaceboost;classThreadPoolClass{private:/*Thelimittothemaximumnumberofthreadstobe*instantiatedwithinthispool*/intmaxThreads;/*GroupofthreadsinthePool*/thread_groupthreadPool;asio::io_serviceasyncIOService;void_Init(){

c++ - 如何正确退出可能正在等待 std::condition_variable 的 std::thread?

我有一个类使用互斥锁和两个条件变量实现线程化生产者/消费者系统以进行同步。当有元素要使用时,生产者向消费者线程发出信号,而消费者在消费完元素时向生产者线程发出信号。线程继续生产和消费,直到析构函数通过设置bool变量请求它们退出。因为任何一个线程都可能在等待条件变量,所以我必须对quit变量进行第二次检查,这感觉不对而且很乱......我已将问题简化为以下(使用g++4.7在GNU/Linux上工作)示例://C++11andBoostrequired.#include//std::rand()#include#include#include#include#include#inclu

c++ - Win32 无窗口应用程序 - 等待程序退出

我有一个无窗口应用程序,其唯一目的是安装一个32位HookDLL文件并等待父程序(64位程序)退出。64位程序是用C#写的,无窗口应用是用C++写的。我最初有这个GetMessage循环,它使程序保持打开状态:while(GetMessage(&msg,NULL,0,0)>0){TranslateMessage(&msg);DispatchMessage(&msg);}我在C#中使用Process.Kill方法关闭C++应用程序,但我发现这不允许C++应用程序干净地关闭。此外,如果C#应用程序崩溃,C++应用程序将永远保持打开状态。我使用此循环检查C++应用程序以查看C#应用程序是否仍

C++ 动态分配的内存在崩溃或强制退出后返回?

我想知道程序崩溃或用户强制退出是否会将动态分配的内存返回给计算机。否则内存将泄漏,直到系统重新启动。 最佳答案 大多数现代操作系统会在进程终止后自动回收所有进程内存。通常,这是通过让操作系统从其页表中逐出与该进程关联的所有虚拟页面来实现的。因此,除非您使用旧操作系统或遇到奇怪的操作系统错误,否则应该回收内存。 关于C++动态分配的内存在崩溃或强制退出后返回?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 如何让 Visual C++ 警告将 int 静默转换为字符串?

如何让编译器(vc14)对此发出警告?我明白为什么会这样(int默默地转换为char,然后转换为string,因为它有一个char构造函数)。但它是错误的来源,它不止一次地咬了我。有什么可以做的吗?inti=1;std::strings;s=i;//"\x1" 最佳答案 使用警告级别4(/W4),如果可能,您应该真正对所有代码使用它。warningC4244:'argument':conversionfrom'int'to'char',possiblelossofdata由于各种原因,VisualC++仍默认为警告级别3。事实上,对

c++ - 即使主窗口关闭,应用程序也不会退出

即使主窗口关闭,我也希望应用程序在后台运行。Icheckedthisone出去试了一下,但是当我明确按下退出按钮时,应用程序退出了。我希望应用程序在后台运行,即使我明确按下退出也是如此。我试过了QApplicationqApp;qApp.setQuitOnLastWindowClosed(false); 最佳答案 我认为您最好尝试使用setVisible(false)隐藏应用程序的主要QWidget之后你需要一些方法来再次打开你的主窗口(托盘菜单是我能想到的第一个选项)用setVisible(true)